home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Tools
/
Useful
/
AmiCDROM
/
src
/
cdrom.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-03
|
3KB
|
104 lines
/* cdrom.h: */
#ifndef _CDROM_H_
#define _CDROM_H_
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/io.h>
#include <devices/scsidisk.h>
#define VERSION "CDROM-Handler 1.15 (03.11.94)"
#define SCSI_BUFSIZE 2048
typedef enum model {
MODEL_ANY,
MODEL_TOSHIBA_3401,
MODEL_CDU_8002,
} t_model;
typedef struct CDROM {
unsigned char *buffer;
unsigned char **buffers;
unsigned char *buffer_data;
unsigned char sense[20];
short scsi_compliance; /* 1 or 2 */
t_model model;
short use_trackdisk;
short lun;
short std_buffers;
short file_buffers;
unsigned long t_changeint;
unsigned long t_changeint2;
long *current_sectors;
unsigned long *last_used;
unsigned long tick;
struct MsgPort *port;
struct IOStdReq *scsireq;
struct SCSICmd cmd;
unsigned short block_length;
unsigned short blocking_factor;
short device_open;
} CDROM;
typedef struct inquiry_data {
char peripheral_type;
char modifier;
char version;
char flags1;
char additional_length;
char reserved[2];
char flags2;
char vendor[8];
char product[16];
char revision[4];
} t_inquiry_data;
typedef struct toc_header {
unsigned short length;
unsigned char first_track;
unsigned char last_track;
} t_toc_header;
typedef struct toc_data {
char reserved1;
unsigned char flags;
unsigned char track_number;
char reserved2;
unsigned long address;
} t_toc_data;
CDROM *Open_CDROM (char *p_device, int p_scsi_id, int p_use_trackdisk,
unsigned long p_memory_type, int p_std_buffers,
int p_file_buffers);
int Read_Sector (CDROM *p_cd, long p_sector);
int Read_Contiguous_Sectors (CDROM *p_cd, long p_sector, long p_last_sector);
void Cleanup_CDROM (CDROM *p_cd);
int Test_Unit_Ready (CDROM *p_cd);
int Mode_Select (CDROM *p_cd, int p_on, int p_block_length);
int Inquire (CDROM *p_cd, t_inquiry_data *p_data);
int Is_XA_Mode_Disk (CDROM *p_cd);
t_toc_data *Read_TOC (CDROM *p_cd, t_toc_header *p_toc_header);
int Has_Audio_Tracks (CDROM *p_cd);
int Data_Tracks (CDROM *p_cd, unsigned long** p_buf);
int Start_Play_Audio (CDROM *p_cd);
int Stop_Play_Audio (CDROM *p_cd);
int Block_Length (CDROM *p_cd);
void Clear_Sector_Buffers (CDROM *p_cd);
int Find_Last_Session (CDROM *p_cd, unsigned long *p_result);
extern int g_cdrom_errno;
extern int g_ignore_blocklength;
enum {
CDROMERR_OK = 0, /* no error */
CDROMERR_NO_MEMORY, /* out of memory */
CDROMERR_MSGPORT, /* cannot create message port */
CDROMERR_IOREQ, /* cannot create I/O request */
CDROMERR_DEVICE, /* cannot open scsi device */
CDROMERR_BLOCKSIZE /* illegal blocksize */
};
#endif /* _CDROM_H_ */